Dig Deeper
Project Overview
Dig Deeper is a 2D Tower Defense Exploration game where you play as a member of an excavation crew stranded deep underground after your vehicle breaks down. Armed with only a single light and your tools, you must traverse the depths in search of a powerful generator to get you back home. However, the deeper you go, the more mysterious and dangerous things become, raising questions about what lies beneath.
Engine: Built entirely in our custom C++ engine
Code Snippets
During the project, I took a lead role in designing tools and the editor for the game designers on our team. One of the key tasks was creating a Unity-like Entity Viewer System, enabling designers to efficiently modify and organize entities within the game. Below are some highlights from that system:
1. Recursive Entity Display with Drag-and-Drop
This function displays entities hierarchically and supports drag-and-drop reparenting for intuitive workflow.
Impact: This recursive logic enables seamless navigation of deeply nested hierarchies and allows drag-and-drop reparenting for intuitive entity organization.
2. Context Menu for Entity Management
A fully functional context menu that allows designers to perform operations such as copying, pasting, adding children, and deleting entities.
Impact: This menu gives designers a flexible toolset for modifying entity hierarchies without leaving the editor, streamlining the design process.
3. Delete Confirmation Popup
Ensures safe deletion of entities by displaying a confirmation dialog before proceeding.
Impact: By adding a confirmation step, this popup prevents accidental deletion of entities and gives designers confidence in their actions.
4. Entity Addition and Initialization
Entities are properly added to the system while handling hierarchical relationships and initialization.
Impact:
- Hierarchy Awareness: Ensures entities with parents are inserted immediately after their parent or siblings in the system.
- Dynamic Handling: Moves newly added entities to a separate vector to prevent issues with recursive additions during initialization.
- Efficiency: Handles initialization of entities systematically, making the system robust and scalable for projects with large, complex entity structures.